﻿#include <iostream>
#include "chmslog.h"
#include <appbase.h>

#include <cmath>


/*
 * 写日志
 * */
void ChMSLog::funVoidWriteLog(QByteArray &log)
{
    switch(AppBase::debugRun){
    case 1:
        goto start;
        break;
    default:
        return;
    }

    start:

    // 当日
    QString today="";
    // 此时
    //QString theHours = "";
    // 此刻
    QString rightNow="";
    // 文件路径
    QString filePath = "";
    // 文件名
    QString fileName = "";

    // 行尾
    const QString lineEnd_WIN = "\r\n";

    ChMSAppPath ObjChMSAppPath;

    today = QDateTime::currentDateTime().toString("yyyyMMddhh");
    rightNow = QDateTime::currentDateTime().toString("dd-hh:mm:ss.zzz ");

    filePath = ObjChMSAppPath.appPath + "/log/";
    fileName = ObjChMSAppPath.appPath + "/log/" + today + (".log");

    /*
     * 中文转码
     * */
    ChMSTextCodec ChMSTc;
    QString chineseLog = ChMSTc.funQStrTextCodec(log);

    QDir objQDir(filePath);
    QFile file(fileName);
    QTextStream out(&file);

    if(!objQDir.exists()){ // 检查目录是否存在
        if(!objQDir.mkdir("../log")){ // 不存在就建立
            return;
        }
    }

    if (!file.open(QIODevice::Append)){ // 打开日志文件，写入
        file.close();
        return;
    }
    // 输出日志记录
    out << rightNow << chineseLog << lineEnd_WIN;
    file.close();

    return;
}


// 用于显示 new delete 对象计数器
void ChMSLog::funVoidViewCounter(std::string &str, int &c)
{
    switch(AppBase::debugRun){
    case 1:
        goto start;
        break;
    default:
        return;
    }

    start:

    std::cout << str << c << std::endl;

    return;
}

// 向控制台显示输出调试信息
void ChMSLog::funVoidConDisInfo(std::string &str)
{
    switch(AppBase::debugRun){
    case 1:
        goto start;
        break;
    default:
        return;
    }

    start:

    std::cout << str << std::endl;

    return;
}

// 向控制台显示输出 中文 调试信息
void ChMSLog::funVoidConDisInfo_Chinese(QByteArray &byArr)
{
    switch(AppBase::debugRun){
    case 1:
        goto start;
        break;
    default:
        return;
    }

    start:
    //QString varQStr_1 = ChMSTc.funQStrTextCodec(byArr);
    std::cout << byArr.toStdString() << std::endl;

    return;
}


ChMSLog::ChMSLog()
{
}

ChMSLog::~ChMSLog()
{
}
